<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // js中报错只会影响 当前脚本的执行，不会影响其他的脚步
        // console.log(b);//b is not defined
        // console.log(a);//b is not defined
    </script>
    <script src="./11.js"></script>

    <script>
        // var a;
        /*
         scope 作用域
             变量起作用的范围

             1- 全局作用域
                也叫window作用域--脚本的最外层 就叫全局作用域
                    在全局作用域中定义的变量就叫全局变量
                        全局变量整个 页面中都可以被使用
                        var 定义的全局变量，可以window上直接使用
             2- 局部作用域
                    函数内部的作用域-叫局部作用域（函数作用域）

                        局部作用域中定义的变量叫局部变量，只在当前的作用域内部 有效，外部使用不了
                        形参也是局部变量
                            return 了局部变量的值，并不会把局部变量改成全局变量，只是返回的局部变量的值

              ps： 全局变量可以在局部中使用   ，但是局部变量不能在全局中使用    
        */
        //  变量a 就是在全局作用域中定义
        // 在全局作用域中定义的变量就叫全局变量
        console.log(a);//undefined
        var a = 1;
        console.log(a);//1
        console.log(b);
        // var 定义的全局变量，可以window上直接使用
        console.log(window.a);

        function box(num) {
            console.log(a);//**** 全局变量可以在局部中使用
            // num 形参也是局部变量
            // 函数作用域，局部作用域
            // 内部定义的变量叫局部变量，只在当前的作用域内部 有效，外部使用不了
            var age = 19;
            console.log(age);//19
            // 可以把局部变量的值，当做函数的返回值 返回出去(只是return了 age 变量的值，age还是局部变量)
            return age;
        }
        // age is not defined
        // console.log(age);
        var r = box(10)
        console.log(r);
    </script>



    <script>
        console.log(a);
    </script>


</body>

</html>